// import { Form, Modal, Space, Button, Icon, Popover, message, Radio, DatePicker, InputNumber, Select, Table, Divider } from '@bytedance/mona-ui';
// import getActPrdWorkTEXT from 'data-text:./getActPrdWork.js'
// const workStr = getActPrdWorkTEXT;
// const workBlob = new Blob([workStr], { type: 'text/javascript;charset=utf-8' });
// const workBlobUrl = URL.createObjectURL(workBlob);
import { getPromotionProductList, checkPromotionProductList, getSkuList } from "@Api/productApi"


export function configFarMate(addLtaLpConfig) {
    // const addLtaLpConfig = JSON.parse(JSON.stringify(data))
    const { business_code, activetTypeSelect, activetiQuantity, activtiTime, activetTimeBuy, selectAcTime, endTimeSmit, endTimeTmetr, selectTitlDater, setyufolyer, yusretimeData, selectGetTimeData } = addLtaLpConfig
    addLtaLpConfig.sold_out_type = addLtaLpConfig.addActivetiorBc
    addLtaLpConfig.order_expire_time = addLtaLpConfig.selectNoteOrderTime * 60
    addLtaLpConfig.activetName = activetTypeSelect ? '(旧)' : '(新)'
    switch (business_code) {
        case 'LimitTime':
            addLtaLpConfig.begin_time = moment(activtiTime).format('YYYY-MM-DD HH:mm:ss')
            addLtaLpConfig.end_time = moment(activtiTime).add(selectTitlDater ? endTimeTmetr : endTimeSmit, selectTitlDater ? "minutes" : "hours").format('YYYY-MM-DD HH:mm:ss')
            addLtaLpConfig.pre_begin_time = moment(activtiTime).subtract(setyufolyer ? yusretimeData : 0, "minutes").format('YYYY-MM-DD HH:mm:ss')
            addLtaLpConfig.activetName = addLtaLpConfig.activetName + '限时抢购'
            addLtaLpConfig.miniZekouter = 0.95
            break;
        case 'LimitQuantity':
            if (!activetiQuantity) return
            addLtaLpConfig.begin_time = moment(activetiQuantity[0]).format('YYYY-MM-DD HH:mm:ss')
            addLtaLpConfig.end_time = moment(activetiQuantity[1]).format('YYYY-MM-DD HH:mm:ss')
            // addLtaLpConfig.end_time = moment(activtiTime).add(selectTitlDater ? endTimeTmetr : endTimeSmit, selectTitlDater ? "minutes" : "hours").format('YYYY-MM-DD HH:mm:ss')
            addLtaLpConfig.pre_begin_time = moment(activetiQuantity[0]).subtract(setyufolyer ? yusretimeData : 0, "minutes").format('YYYY-MM-DD HH:mm:ss')
            addLtaLpConfig.activetName = addLtaLpConfig.activetName + '限量抢购'
            addLtaLpConfig.miniZekouter = 0.95

            break;
        case 'OrdinaryTimeBuy':
            if (!activetTimeBuy) return
            addLtaLpConfig.begin_time = moment(activetTimeBuy[0]).format('YYYY-MM-DD HH:mm:ss')
            addLtaLpConfig.end_time = selectAcTime ? moment(activetTimeBuy[0]).add(selectGetTimeData, "minutes").format('YYYY-MM-DD HH:mm:ss') : moment(activetTimeBuy[1]).format('YYYY-MM-DD HH:mm:ss')
            addLtaLpConfig.pre_begin_time = moment(activetiQuantity[0]).format('YYYY-MM-DD HH:mm:ss')
            addLtaLpConfig.activetName = addLtaLpConfig.activetName + '普通降价促销'
            addLtaLpConfig.miniZekouter = 0.99
            break;
        // 有不限制库存情况
        case '0':
            if (!activetTimeBuy) return
            addLtaLpConfig.begin_time = moment(activetTimeBuy[0]).format('YYYY-MM-DD HH:mm:ss')
            addLtaLpConfig.end_time = selectAcTime ? moment(activetTimeBuy[0]).add(selectGetTimeData, "minutes").format('YYYY-MM-DD HH:mm:ss') : moment(activetTimeBuy[1]).format('YYYY-MM-DD HH:mm:ss')
            addLtaLpConfig.pre_begin_time = moment(activetiQuantity[0]).format('YYYY-MM-DD HH:mm:ss')
            addLtaLpConfig.activetName = addLtaLpConfig.activetName + '限时抢购'
            break;
        default:
            break;
    }
    return addLtaLpConfig
}

export function LtalpPrittypeName(config) {
    return config
}
export let selectAcTimeList = [{
    title: '5分钟',
    value: 5
}, {
    title: '10分钟',
    value: 10
}, {
    title: '15分钟',
    value: 15
}, {
    title: '30分钟',
    value: 30
}, {
    title: '1小时',
    value: 60
}, {
    title: '24小时',
    value: 1440
}, {
    title: '3天',
    value: 3 * 24 * 60
}, {
    title: '5天',
    value: 5 * 24 * 60
}, {
    title: '7天',
    value: 7 * 24 * 60
}]
export let yureDateTime = [{
    title: '0小时',
    value: 0
}, {
    title: '0.25小时',
    value: 15
}, {
    title: '0.5小时',
    value: 30
}, {
    title: '1小时',
    value: 60
}, {
    title: '1.5小时',
    value: 90
}, {
    title: '2小时',
    value: 120
}, {
    title: '2.5小时',
    value: 150
}, {
    title: '3小时',
    value: 180
}, {
    title: '3.5小时',
    value: 210
}, {
    title: '4小时',
    value: 240
}, {
    title: '5小时',
    value: 300
}, {
    title: '6小时',
    value: 360
}, {
    title: '7小时',
    value: 420
}, {
    title: '8小时',
    value: 480
}, {
    title: '9小时',
    value: 540
}, {
    title: '10小时',
    value: 600
}, {
    title: '11小时',
    value: 660
}, {
    title: '12小时',
    value: 720
},
]
export const pritFlotRadio = [
    { label: '保留两位小数', value: '0' },
    { label: '保留一位小数', value: '1' },
    { label: '保留整数', value: '2' },
    { label: '手动输入小数位', value: '3' },
]
export const skuSetingoptions = [
    { label: '全部 sku', value: '0' },
    { label: '排除最低价', value: '1' },
    { label: '最低价 sku', value: '2' },
    { label: '最高价 sku', value: '3' },
    { label: '最多库存的一个sku', value: '4' },
    { label: '最少库存的一个 sku', value: '5' },
    { label: '第一个 sku', value: '6' },
    { label: '最后一个 sku', value: '7' },
]
export const minskySeletcoption = [
    { label: '最低价SKU第一个', value: '0' },
    { label: '最低价SKU最后一个', value: '1' },
    { label: '随机选择一个最低价SKU', value: '2' },
    { label: '所有的最低价SKU', value: '3' },
]
export const skutypenameRadio = [
    {
        label: '一口价',
        name: '一口价',
        value: '0'
    },
    {
        label: '直降',
        value: '1',
        name: '直降'
    },
    // {
    //     label: '打折（一口价方式）',
    //     value: '3',
    //     name: '打折'
    // },
    {
        label: '打折',
        value: '2',
        name: '打折'
    },
]

export const pritConfigItem = {
    // index: 0,
    pritType: '0', // 0一口价 1直降 2打折一口价 3打折
    typeName: '一口价',
    type0AllConfig: [{
        skymin: '0',
        skymax: '99999999.99',
        prit: '20000', // 价格
        lin: 5, // 每人领
        kucuntype: '2', // 0不限制 1全部 2百分比 3统一
        bai: '20', // 库存%
        len: '80' //库存数量
    }],
    type0MinConfig: {
        prit: '50', // 价格
        lin: 5, // 每人领
        kucuntype: '2', // 0不限制 1全部 2百分比 3统一
        bai: '20', // 库存%
        len: '80', //库存数量
        minskust: '0' // 0 1 2 3
    }, // 还有其他几组的配置
    type0MinConfigStatus: false,
    type1AllConfig: [{
        skymin: '0',
        skymax: '99999999.99',
        prit: '5', // 价格
        lin: 5, // 每人领
        kucuntype: '2', // 0不限制 1全部 2百分比 3统一
        bai: '20', // 库存%
        len: '80' //库存数量
    }],
    type1MinConfig: {
        prit: '50', // 价格
        lin: 5, // 每人领
        kucuntype: '2', // 0不限制 1全部 2百分比 3统一
        bai: '20', // 库存%
        len: '80', //库存数量
        minskust: '0' // 0 1 2 3
    }, // 还有其他几组的配置
    type1MinConfigStatus: false,
    type2AllConfig: [{
        skymin: '0',
        skymax: '99999999.99',
        prit: '9.5', // 价格
        lin: 5, // 每人领
        kucuntype: '2', // 0不限制 1全部 2百分比 3统一
        bai: '20', // 库存%
        len: '80' //库存数量
    }],
    type2MinConfig: {
        prit: '9.5', // 价格
        lin: 5, // 每人领
        kucuntype: '2', // 0不限制 1全部 2百分比 3统一
        bai: '20', // 库存%
        len: '80', //库存数量
        minskust: '0' // 0 1 2 3
    }, // 还有其他几组的配置
    type2MinConfigStatus: false,
    type3AllConfig: [{
        skymin: '0',
        skymax: '99999999.99',
        prit: '20000', // 价格
        lin: 5, // 每人领
        kucuntype: '2', // 0不限制 1全部 2百分比 3统一
        bai: '20', // 库存%
        len: '80' //库存数量
    }],
    type3MinConfig: {
        prit: '50', // 价格
        lin: 5, // 每人领
        kucuntype: '2', // 0不限制 1全部 2百分比 3统一
        bai: '20', // 库存%
        len: '80', //库存数量
        minskust: '0' // 0 1 2 3
    }, // 还有其他几组的配置
    type3MinConfigStatus: false,
    skuSeting: '0', // 0 1 2 3 4 5 6 7
    pritFlot: '0', // 0 1 2 3手动 
    flotNum: '',
    aotoPrtMin: true,
    showAll: true,
}

// let getActPrdWork
let noContentList
export function getProductListWork(configList) {
    // 1.创建worker
    // 2.worker内的工作
    // 2.1获取所有的商品 marketing/activity/v1/query_available_product_v2
    // 2.2过滤无效的商品 即in_campaign === 1 为无效的商品
    // 2.3过滤相同的活动配置，即活动时间完全相同的活动表示为同一活动（只需获取一份商品列表）
    // 2.4 使用过滤后的商品与过滤后的活动列表调用 marketing/promotion/v1/check_promotion_validation 接口检查符合指定活动的商品
    // 3.worker内的工作完成后的回调
    // 4. 使用 marketing/promotion/v1/batch_query_sku_list_v2 获取sky列表
    return new Promise((resolve, reject) => {
        const getActPrdList = {
            "page": 1,
            "pageSize": 100,
            "activityToolType": 26,
            // "product_id": "3684570914181218576",
            "business_code": "",
            "start_time": '',
            "end_time": '',
            "limit_stock_type": 0,
            "config_scope": 0
        }

        getPromotionProductList(getActPrdList).then(res => {
            if (!res.code) {
                const getallData = []
                while ((getActPrdList.pageSize * getActPrdList.page) < res.total) {
                    getActPrdList.page++
                    getallData.push(getPromotionProductList(getActPrdList))
                }
                Promise.all(getallData).then(resit => {
                    let datas = res.data

                    resit.forEach(resdata => {
                        datas.push(...resdata.data)
                    })
                    noContentList = datas.filter(item => item.in_campaign === 0)
                    datas = []
                    checkPromotionValidationFun(configList).then(res => {
                        resolve(res)
                    })
                })
            } else {
                console.log('未登陆，没权限等情况，在拦截器内部处理')
            }
        }).catch(err => {
            console.log('返回的消息', err)
            reject(err)
        })
    })
}

export function checkPromotionValidationFun(configList) {
    const upAddContent = []
    let product_infos = []
    const cheakConfig = {
        "validate_type": 1,
        "participate_type": 1,
        "activity_tool_type": 26,
        "start_time": '',
        "end_time": '',
        "product_infos": []
    }
    configList.forEach(item => {
        // ${item.business_code}
        let keyItem = `${item.indexkey}${item.begin_time}${item.end_time}`
        if (!upAddContent.find((items) => keyItem === items.onkey)) {
            // console.log('item', new Date(item.begin_time).getTime() / 1000, new Date(item.end_time).getTime() / 1000)
            upAddContent.push({
                onkey: keyItem,
                config: item,
                ckproduct: []
            })
        }
    })
    return new Promise((resolve, reject) => {
        const copynoContentList = JSON.parse(JSON.stringify(noContentList))
        upAddContent.forEach((copyPredect, ind) => {
            copyPredect.ckproduct = JSON.parse(JSON.stringify(noContentList))
        })
        while (copynoContentList.length > 0) {
            let infoList = []
            const splits = copynoContentList.splice(0, 100)

            splits.map(listconetr => {
                // datas.push(...listconetr)
                infoList.push({
                    channel_id: '0',
                    channel_type: 0,
                    product_id: listconetr.product_id,
                })
            })
            product_infos.push(infoList)
        }
        // 检查活动的情况
        const upInfoContentData = upAddContent.map(getItem => {
            const copyInitData = JSON.parse(JSON.stringify(cheakConfig))
            copyInitData.start_time = new Date(getItem.config
                .begin_time).getTime() / 1000
            copyInitData.end_time = new Date(getItem.config
                .end_time).getTime() / 1000
            const getOyer = product_infos.map(gters => {
                copyInitData.product_infos = gters
                return checkPromotionProductList(copyInitData)
            })
            return new Promise((resv, rejc) => {
                Promise.all(getOyer).then(res => {
                    resv(res)
                })
            })

            // copyInitData.product_infos = []
        })
        // console.log('检查的配置', upInfoContentData)

        // console.log('检查的商品', product_infos)
        // 过滤相同的活动配置，即活动类型与活动时间完全相同的活动表示为同一活动（只需获取一份商品列表）
        Promise.all(upInfoContentData).then((res) => {
            // console.log('检查的结果', res)
            // console.log('可以对应到shopid上了', res)
            res.forEach((prdlitAls, index) => {
                prdlitAls.forEach((prdlit) => {
                    if (!prdlit.code) {
                        prdlit.data && prdlit.data.product_check_infos &&
                            Object.keys(prdlit.data.product_check_infos).forEach((key, int) => {
                                const getPrdInfo = prdlit.data.product_check_infos[key]
                                // console.log('getPrdInfo', getPrdInfo)
                                const getTilenIds = upAddContent[index].ckproduct.find((refoterItem, indesr) => {
                                    // refoterItem.
                                    // return refoterItem.product_id === getPrdInfo.product_id
                                    // console.log('refoterItem', refoterItem)

                                    return key.includes(refoterItem.product_id)
                                })
                                // console.log('getTilenIds', key, getTilenIds)
                                if (getTilenIds) {
                                    if (getTilenIds.stock_num == 0) {
                                        getTilenIds.chrackData = {
                                            check_pass: false,
                                            reject_reason: '商品库存为0, 不可用'
                                        }
                                    } else {
                                        getTilenIds.chrackData = getPrdInfo

                                    }
                                }

                            })
                        // prdlit.data.product_check_infos.forEach((contentItem, int) => {
                        //     console.log('contentItem', contentItem, noContentList)
                        // })
                    }
                })
            })
            // console.log('所有活动所有商品检查完毕', upAddContent)
            resolve(upAddContent)

        })
    })

}

export function getSkuListFunc(data) {
    return new Promise((resolve, reject) => {
        getSkuList(data).then(res => {
            // console.log('getSkuListFunc', res)
            resolve(res)
        }).catch(err => {
            console.log('返回的消息', err)
            reject(err)
        })
    })
}